فرض کن یه ساختمان داری که چند تا در ورودی داره. هر بار که از یه در وارد میشی، یه سری قوانین و تنظیمات برات فعال میشه. توی لینوکس، شل (Shell) هم مثل همون ساختمان هست و فایلهای پیکربندی مثل قوانین ورودی هستن. بسته به اینکه چطور وارد میشی (لاگین، ترمینال جدید، اسکریپت)، فایلهای مختلفی اجرا میشن. این جلسه بهت یاد میده چطور این قوانین رو مدیریت کنی!
شل (Shell) یک واسط (Interface) بین کاربر و هسته لینوکس است که دستورات را دریافت و اجرا میکند. در لینوکس، شل به سه روش اصلی اجرا میشود:
/etc/profile و ~/.bash_profile اجرا میشوند./etc/bash.bashrc و ~/.bashrc اجرا میشوند./etc/profile و ~/.bash_profile اجرا نمیشوند.
وقتی یک شل (مخصوصاً Bash) اجرا میشود، فایلهای پیکربندی مختلفی را میخواند تا محیط کاربری را تنظیم کند. این فایلها به ترتیب زیر اجرا میشوند:
/etc/profile
این فایل سیستمی است و برای همه کاربران اجرا میشود. معمولاً شامل تنظیمات عمومی مانند PATH، umask و متغیرهای محیطی است.
/etc/profile فقط در Login Shell اجرا میشود.
این فایلها در دایرکتوری خانه کاربر قرار دارند و به ترتیب زیر بررسی میشوند:
~/.bash_profile (اولویت اول)~/.bash_login (اگر اولی وجود نداشته باشد)~/.profile (اگر هیچکدام وجود نداشته باشند)~/.bash_logout زمانی که از شل خارج میشوید اجرا میشود و معمولاً برای پاکسازی محیط استفاده میشود.
/etc/bash.bashrc و ~/.bashrc
این فایلها در Interactive Shell (غیر از Login) اجرا میشوند. /etc/bash.bashrc عمومی است و ~/.bashrc شخصی است.
~/.bashrc اجرا نمیشود (مگر اینکه در ~/.bash_profile به آن اشاره شود). در Interactive Shell، ~/.bashrc اجرا میشود.
| فایل | نوع شل | کاربرد |
|---|---|---|
/etc/profile |
Login Shell | تنظیمات عمومی سیستم |
~/.bash_profile |
Login Shell | تنظیمات شخصی (اولویت اول) |
~/.bash_login |
Login Shell | تنظیمات شخصی (اولویت دوم) |
~/.profile |
Login Shell | تنظیمات شخصی (اولویت سوم) |
/etc/bash.bashrc |
Interactive Shell | تنظیمات عمومی برای Interactive Shell |
~/.bashrc |
Interactive Shell | تنظیمات شخصی برای Interactive Shell |
~/.bash_logout |
خروج از شل | پاکسازی محیط هنگام خروج |
Sub Shell یک شل جدید است که از یک شل والد (Parent Shell) ایجاد میشود. این شل تنظیمات والد را به ارث میبرد، اما متغیرهای Local در آن قابل دسترس نیستند (مگر اینکه Global باشند).
توضیح: دستور داخل پرانتز در یک Sub Shell اجرا میشود و پس از اتمام، به دایرکتوری قبلی برمیگردد.
() ایجاد میشود و تغییرات آن بر Parent Shell تأثیر نمیگذارد.
alias
alias به شما اجازه میدهد برای دستورات طولانی یا پیچیده، یک نام مستعار ایجاد کنید.
توضیح: با alias ll='ls -la'، هر بار که ll را تایپ میکنید، ls -la اجرا میشود.
توضیح: alias بدون آرگومان، لیست همه نامهای مستعار را نمایش میدهد.
unalias alias_name استفاده کنید.
/etc/profile و ~/.bash_profile (یا ~/.bash_login یا ~/.profile)/etc/bash.bashrc و ~/.bashrc() ایجاد میشود و تغییرات آن موقتی است.alias name='command' ایجاد میشود و با unalias حذف میشود.